import os

def check(x, prefix, n, k):
    # 判断是否存在连续 x 个菜品总耗时不超过 k
    for i in range(x, n+1):
        # prefix 数组下标从 0 开始，prefix[i] 表示前 i 个数字的和
        if prefix[i] - prefix[i - x] <= k:
            return True
    return False

def compute_answer(n, k, a_list):
    # 计算前缀和，prefix[0] = 0，prefix[i] = a[0] + ... + a[i-1]
    prefix = [0] * (n + 1)
    for i in range(1, n + 1):
        prefix[i] = prefix[i-1] + a_list[i-1]
    
    # 二分查找最大 x，使得存在连续 x 个数字和 <= k
    l = -1
    r = n
    while l < r:
        mid = (l + r + 1) // 2
        if check(mid, prefix, n, k):
            l = mid
        else:
            r = mid - 1
    return l

# 输入、输出目录
input_dir = r"C:\Users\ASUS\Desktop\2025-BBUCPC\2025校赛出题\D题\D_inputs"
output_dir = r"C:\Users\ASUS\Desktop\2025-BBUCPC\2025校赛出题\D题\D_outputs"
os.makedirs(output_dir, exist_ok=True)

# 处理 20 个测试点
for i in range(1, 21):
    input_file = os.path.join(input_dir, f"{i}.in")
    output_file = os.path.join(output_dir, f"{i}.out")
    
    # 读取输入数据
    with open(input_file, "r") as fin:
        lines = fin.readlines()
    # 第一行包含 n 和 k（注意题目中 k 对应测试点中的 t 值）
    n_k = lines[0].strip().split()
    n = int(n_k[0])
    k = int(n_k[1])
    # 第二行为 n 个整数 a_i
    a_list = list(map(int, lines[1].split()))
    
    # 计算答案
    ans = compute_answer(n, k, a_list)
    
    # 将答案写入对应的输出文件中
    with open(output_file, "w") as fout:
        fout.write(str(ans))
        
print("20个测试点对应的输出数据生成完毕")
